Всем привет.
Недавно начал изучать ноду, и столкнулся с непониманием того, как нужно правильно писать в асинхронном стиле.
Попытаюсь объяснить суть проблемы на простом примере чтения данных с различных источников.
Как я делал в пхп:
//Считывал содержимое файла в переменную ($file).
//Делал запрос на некий url и получал данные ($curl).
//Делал запрос к бд и выбираю нужные данные ($db).
//А потом вывожу их в нужной мне последовательности
echo $file;
echo $db;
echo $curl;
Как подобное делается в ноде?
Или вот простой пример чтения файла и вывода его содержимого:
var fs = require('fs'),
fileText = '',
fileText2 = '';
fs.readFile('file.txt', 'utf-8', function(err, data) {
fileText = data;
console.log('\ncallback вызван\n');
});
fs.readFile('file2.txt', 'utf-8', function(err, data) {
fileText2 = data;
console.log('\ncallback2 вызван\n');
});
console.log('\n\n__начало html-разметки__\n\n' + fileText + '\n\n__прочий html-код__' + fileText2);
Если запустить этот код, то при удачном выполнении выведется сначало содержимое последней строки, а только потом коллбэки, хотя, как видите, нужно несколько другое.
Не побрезгаю ссылками на статьи(с примерами) на английском/русском языке
